systemcalls.h找不到这样的文件或目录

时间:2014-07-22 21:47:39

标签: c unix system-calls

我正在阅读K& R的C编程,我刚刚开始了最后一章:UNIX SYSTEM INTERFACE。我遇到了一个进行系统调用的文件复制代码。首先我在codeblocks windows中编译了这个代码我得到了一个dir / file找不到的错误然后我认为我应该在Linux中编译这个代码。但是我得到了同样的错误。

我在stackoverflow上读了一些其他问题: sudo apt-get update 再次安装linux头文件

读取使用syscall.h的地方但是BUFSIZ没有在那里定义,我不认为这本书是错误的。

#include "syscalls.h"

main()
{
char buf[BUFSIZ];
int n;
while((read(0,buf,BIFSIZ))>0)
     write(1,buf,n)
return 0;
}

2 个答案:

答案 0 :(得分:3)

#include <unistd.h>
#include<stdio.h>
main()
{
char buf[BUFSIZ];
int n;
while((n = read(0,buf,BUFSIZ))>0)
     write(1,buf,n); //Output to the Console
return 0;
}

编辑: unistd.h可以使用。修正了错字!

<强>输出:

myunix:/u/mahesh> echo "Hi\nWorld" | a.out
Hi
World

答案 1 :(得分:1)

"syscalls.h"更改为<sys/syscall.h>。这是Linux中正确的标题。

添加#include <stdio.h>以获取BUFSIZE

您的代码中也有一些拼写错误:
- 在while语句中将BIFSIZE更改为BUFSIZE。现在它将编译。
- 但是,你也忘了在循环中指定n。更改为n = read(

最终代码应为:

#include <stdio.h>
#include <sys/syscall.h>
main()
{
    char buf[BUFSIZ];
    int n;
    while((n = read(0,buf,BUFSIZ))>0)
        write(1,buf,n);
    return 0;
}