gpt4 book ai didi

检查程序是否正在被管道传输

转载 作者:太空宇宙 更新时间:2023-11-04 08:09:45 28 4
gpt4 key购买 nike

我正在编写一个程序来加速 git push 操作。这是它需要做的:

printf("[github-username]\n[github-password]");

然后我会像这样使用它:

git-autologin | git push

但我不希望任何人只要输入 git-autologingit-autologin > file.txt 就可以看到我的用户名和密码。我知道这听起来很愚蠢,因为任何人仍然可以自动执行 git 命令,但任何不受信任的用户都不太可能进入我的系统。

我的问题:我如何判断标准输出是正在写入文件/终端还是正在通过管道传输?
编辑: git push 管道只是一个想法,并不是我要问的唯一原因。 编辑:是否有任何方法可以确定 PID 或有关其正在通过管道传输到的进程的更多信息?

最佳答案

您可以通过使用(在 Linux 和 POSIX 上!)isatty(3) 来检测 stdout 何时是一个终端函数,可能是 isatty(STDOUT_FILENO)

因此您可以猜测,如果 isatty(STDOUT_FILENO) 为 false,标准输出将被重定向或通过管道传输。

或者,使用 fstat(2)作为 fstat(STDOUT_FILENO, &stdoutstat);

但是您应该在您的系统上正确设置 ssh(使用凭据,任何 SSH 教程的 STFW!),以避免 git 询问任何密码。

关于检查程序是否正在被管道传输,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40325430/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com