为什么行write(1, lol, 1);
无法在main
函数中运行?它只是空白并且在程序结束时返回值0,但是当我调用函数filecopy(0,1)
时,它是否有效?
编辑:我收录了"syscall.h"
int main(void)
{
///// filecopy(0,1)
char lol = 'D';
write(1, lol, 1);
return 0;
}
void filecopy(int from, int to)
{
int n;
int buf[100];
while((n=read(from, buf, 100)) > 0)
write(to, buf, n);
}
答案 0 :(得分:1)
写入一个地址 - 而不是一个值(http://linux.die.net/man/2/write)。调用write的正确方法是
int main(void)
{
///// filecopy(0,1)
char lol = 'D';
write(1, &lol, 1);
return 0;
}
答案 1 :(得分:1)
在filecopy()
功能中,您接到了write()
的权限。
write(to, buf, n); //buf is a pointer.
在您的main()
代码中,问题出在
write(1, lol, 1); // lol is of type char, it's not an address.
write()
的第二个参数应为void *
。改为
write(1, &lol, 1);
强烈建议您在编译器中启用警告,并查看并修复编译器发出的警告。