我需要在 Solaris 上编写 Solaris 'line' 应用程序,这非常简单,在 Linux 上。它是为脚本开发的,它需要一行标准输入并将其输出到标准输出。为此,我编写了一个非常简单的 C 程序。我使用了两者getline
,fgets
并且它们产生了相同的结果:
int main(int argc, char* argv[])
{
char buf[256];
char* line = NULL;
if (fgets(line, 256, stdin) != NULL)
//if (getline(&line, &len, stdin) != -1)
{
printf("%s", line);
}
return EXIT_SUCCESS;
}
C-Shell 脚本loop_file
如下所示:
#!/bin/csh -f
while(1)
set line = `app`
echo "Got Line : $line"
end
我使用以下方法开始该过程:
./loop_file < textFile.txt
这是一个大文件,第一行只是打印出来,但下一行几乎是 4096 个字符,第三行之后几乎是 4096 个字符,依此类推。这不是逐行读取。我什至尝试忘记使用 C 并在 while 循环中使用 awk。
有任何想法吗?
顺便说一句,不要说 - 不要使用 CSH - 这是我需要移植的遗留代码 :)
while(1)
set line = `app`
set name = $line[0];
set address = $line[1];
set purpose = $line[2];
end