怎么才能使用stderr
时间: 2024-02-17 07:11:40 浏览: 140
stderr是标准错误输出流,可以用于将程序的错误信息输出到屏幕或日志文件中。在C语言中,可以使用标准库函数fprintf()将错误信息输出到stderr流中。
要使用stderr流,需要包含stdio.h头文件,并使用fprintf()函数将错误信息输出到stderr流中。例如:
```
#include <stdio.h>
int main() {
FILE *fp;
fp = fopen("file.txt", "r");
if (fp == NULL) {
fprintf(stderr, "Error opening file\n");
return 1;
}
// other code
return 0;
}
```
在上面的例子中,如果文件打开失败,就会通过fprintf()函数将错误信息输出到stderr流中,然后返回1表示程序执行失败。
注意:stderr流是默认输出到屏幕上的,可以使用重定向符号将其输出到日志文件中。例如,将错误信息输出到error.log文件中:
```
./myprogram 2> error.log
```
这样,程序中输出到stderr流的错误信息就会被重定向到error.log文件中。
相关问题
stdin, stdout, stderr = coon.exec_command('ls') if stderr.read() == b'': # 没有发生错误 for line in stdout.readlines(): print(line.strip()) else: print(stderr.read())
这段代码是使用Python的Paramiko库来连接SSH服务器,并执行命令。具体流程如下:
1. 使用Paramiko库的SSHClient类来建立SSH连接,如下所示:
```python
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect(hostname='hostname', port=22, username='username', password='password')
```
2. 使用SSH连接对象的exec_command()方法执行命令,如下所示:
```python
stdin, stdout, stderr = ssh.exec_command('ls')
```
这里执行的是`ls`命令,可以根据需要更改为其他命令。
3. 检查是否有错误发生,如果没有,则读取输出结果并打印,如下所示:
```python
if stderr.read() == b'':
# 没有发生错误
for line in stdout.readlines():
print(line.strip())
```
如果有错误发生,则读取错误信息并打印。
完整代码如下所示:
```python
import paramiko
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect(hostname='hostname', port=22, username='username', password='password')
stdin, stdout, stderr = ssh.exec_command('ls')
if stderr.read() == b'':
# 没有发生错误
for line in stdout.readlines():
print(line.strip())
else:
# 发生错误
print(stderr.read())
```
注意,这里需要安装Paramiko库才能运行代码。可以使用以下命令安装:
```shell
pip install paramiko
```
ignoring input and redirecting stderr to stdout nohup: failed to run command ‘./test.py’: Permission denied
看起来你在尝试运行一个名为 'test.py' 的Python脚本,但遇到了权限被拒绝的问题。这个问题可能有以下几个原因:
1. 你可能没有运行该脚本的权限。你可以通过更改文件或目录的权限来解决这个问题。例如,如果你在Unix/Linux系统中,你可以使用`chmod`命令来更改文件权限。例如,`chmod +x test.py`将会给这个脚本添加执行权限。
2. 你可能在一个需要特殊权限才能访问的目录中运行这个脚本。例如,你可能在一个需要管理员权限才能访问的目录中运行这个脚本。在这种情况下,你需要更改你的工作目录或者使用管理员权限运行你的脚本。
3. 你的脚本可能正在使用一些需要特殊权限的文件或资源,如数据库连接或其他需要特殊权限的文件或目录。
对于“nohup”命令失败的问题,这通常意味着你试图在没有挂断终端的环境中运行一个命令。这可能是因为你正在使用SSH远程登录到一个服务器,并且你尝试在不关闭SSH会话的情况下运行你的脚本。在这种情况下,你需要确保你的命令以“nohup”开头,并且将“&”符号放在命令的末尾。例如:
```bash
nohup ./test.py &
```
这将会在后台运行你的脚本,并且将标准错误输出重定向到标准输出。
如果以上建议不能解决你的问题,我建议你提供更多的信息,如你的操作系统、你正在使用的命令、以及任何相关的错误消息,这样我可以提供更具体的帮助。
阅读全文