About This Site
Linuxのシステムコールを用いて最終的にネットワークのプログラミングを試みようとしています.
情報の公開と言うよりは管理人の備忘録となっている場合が多くなっています.
LinuxベースのC言語を用いたシステムコールの利用方法.
Linuxのシステムコールを用いて最終的にネットワークのプログラミングを試みようとしています.
情報の公開と言うよりは管理人の備忘録となっている場合が多くなっています.
下記のコードはシステムコールを使った, 擬似のcatコマンドです.
Vimで強制的に特殊文字を変換したのでおかしくなっているところがあるかもしれません.
#include<stdio.h>
#include<stdlib.h>
#include<unistd.h>
#include<sys/types.h>
#include<sys/stat.h>
#include<fcntl.h>
#define BUFF 16384
#ifdef EOF
#define EOF (-1)
#endif
static void die_err(const char *path);
static void cat_clo(const char *path);
int main(int argc, char **argv)
{
int i;
if(argc < 2) {
fprintf(stderr, "usage: %s file name ....\n", argv[0]);
exit(1);
}
for(i = 1; i < argc; i++)
cat_clo(argv[i]);
return 0;
}
static void cat_clo(const char *path)
{
int fd, n;
char buff[BUFF];
if((fd = open(path, O_RDONLY)) == EOF) {
perror("open");
exit(1);
}
while(1) {
if((n = read(fd, buff, BUFF)) == EOF) die_err(path);
if(n == 0) break;
if(write(1, buff, n) == EOF) die_err(path);
}
close(fd);
}
static void die_err(const char *path)
{
perror(path);
exit(1);
}