C 如何在getopt中停止管道?
我正试图在getopt中运行类似的程序 ./bmptool-s2 example.bmp |./bmptool-r 90-o out.bmp 我的代码可以运行,但我想知道是否有办法不运行此命令 ./bmptool-r 90-o out.bmp 如果我跑步时出了什么问题 ./bmptool-s2 example.bmp 以下方法用于捕获用户是否输入了不存在的案例,并在需要时退出程序。当我只运行一个命令时,它可以工作,但当我将命令链接在一起时,它仍然运行下面的命令,给我一些我不想要的输出。任何帮助都将不胜感激。谢谢C 如何在getopt中停止管道?,c,C,我正试图在getopt中运行类似的程序 ./bmptool-s2 example.bmp |./bmptool-r 90-o out.bmp 我的代码可以运行,但我想知道是否有办法不运行此命令 ./bmptool-r 90-o out.bmp 如果我跑步时出了什么问题 ./bmptool-s2 example.bmp 以下方法用于捕获用户是否输入了不存在的案例,并在需要时退出程序。当我只运行一个命令时,它可以工作,但当我将命令链接在一起时,它仍然运行下面的命令,给我一些我不想要的输出。任何帮助都
if (err || optind + 1 < argc) {
fprintf(stderr, usage, argv[0]);
exit(-1);
}
if(err | | optind+1
这与getopt甚至C无关。foo | bar
告诉shell并行运行命令foo
和bar
,其中foo
的输出连接到bar
的输入。您无能为力,因为两个程序都会立即启动。当我运行第二个命令时,是否无法“捕获”它?比如,如果我在第一个命令中输出“quit”之类的内容,我可以在运行第二个命令并退出时查看这是否是输入吗?或者我完全误解了管道?当然,如果你控制管道的两侧,你可以这样做。你可以在输入时观察EOF/错误,只需不向标准输出写入任何内容,并在错误时退出。。。如果第一个实例失败并退出,第二个实例将在stdin上获得EOF,并且也可以退出;然后./bmptool-r 90-o out.bmpmktemp
)和信号情况下的清理(trap
)方面更聪明一些。