爲什麼write(1, lol, 1);
行在main
函數中不起作用?它只是空白,並返回值爲0結束的程序,但當我打電話功能filecopy(0,1)
,它的作品?爲什麼write()標準輸出不工作?
編輯:我包括"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);
}
打開編譯器的警告並修復報告的問題。 – Mat 2015-02-08 19:35:24
在''中聲明瞭POSIX函數'read()'和'write()'。你應該很少需要''syscall.h'' - 我曾經在我的職業生涯中使用過它,那是爲了訪問一個系統調用,手冊上說「這個系統調用沒有功能」。 –
2015-02-08 19:36:57
請注意,您的'n'類型錯誤 - 它應該是'size_t'(或'ssize_t'),而不是'int'。傳遞給'read'的大小應該是'100 * sizeof(int)',而不是'100'(要麼是使用'buff'而是'char'而不是'int')。 – 2015-02-08 19:39:57