Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/61.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 如何在不使用重定向运算符的情况下重定向链接器错误?_C_Linux - Fatal编程技术网

C 如何在不使用重定向运算符的情况下重定向链接器错误?

C 如何在不使用重定向运算符的情况下重定向链接器错误?,c,linux,C,Linux,[此问题不是关于修复错误,而是关于重定向错误] 我有一个程序(C/linux),由于缺少共享库,它在控制台上显示错误。上面写着“无法加载库…”。如何将此输出重定向到文件中 我在我的程序中尝试了这一点: close(2); open("/home/user/test.txt", O_CREAT|O_RDWR); 它正确重定向程序printfs生成的输出。但“无法加载库…”仍然出现在控制台上 我不想为此使用>操作符。我想从我的程序内部做这件事。有什么建议吗 谢谢尝试确保环境变量LD\u LIBRA

[此问题不是关于修复错误,而是关于重定向错误]

我有一个程序(C/linux),由于缺少共享库,它在控制台上显示错误。上面写着“无法加载库…”。如何将此输出重定向到文件中

我在我的程序中尝试了这一点:

close(2);
open("/home/user/test.txt", O_CREAT|O_RDWR);
它正确重定向程序printfs生成的输出。但“无法加载库…”仍然出现在控制台上

我不想为此使用>操作符。我想从我的程序内部做这件事。有什么建议吗


谢谢

尝试确保环境变量
LD\u LIBRARY\u PATH
正确。

尝试确保环境变量
LD\u LIBRARY\u PATH
正确。

您将需要一个包装程序。它可能是一个shell脚本。执行重定向,然后尝试运行原始程序


程序甚至在开始运行之前都无法捕获发生在它身上的错误。库链接发生在任何其他代码运行之前。

您将需要一个包装程序。它可能是一个shell脚本。执行重定向,然后尝试运行原始程序


程序甚至在开始运行之前都无法捕获发生在它身上的错误。库链接发生在任何其他代码运行之前。

警告和错误消息出现在程序开始工作之前,所以唯一的选项是>运算符

这样

./a.out >&  filename

警告和错误消息出现在程序开始工作之前,所以唯一的选项是>运算符

这样

./a.out >&  filename

似乎消息是在程序启动之前生成的-因此要重定向它,必须使用2>操作符。否则,您将不得不使用dlopen。。。等。调用在运行时进行链接。

似乎消息是在程序启动之前生成的-因此要重定向它,必须使用2>操作符。否则,您将不得不使用dlopen。。。etc.调用在运行时进行链接。

错误消息由加载程序生成,甚至在程序启动之前发生。因此,在一个程序中,你无法做任何事情,而这个程序甚至无法运行,从而影响加载程序的行为


如果确实需要修改shell使用的文件描述符,请检查
exec
shell命令以永久关闭和重定向文件描述符。通过这种方式,您可以使用重定向操作符
,尽管这可以说是一种不太整洁的方法。

错误消息是由加载程序生成的,甚至在程序启动之前就发生了。因此,在一个程序中,你无法做任何事情,而这个程序甚至无法运行,从而影响加载程序的行为


如果确实需要修改shell使用的文件描述符,请检查
exec
shell命令以永久关闭和重定向文件描述符。这样,您就可以使用重定向操作符
,尽管这可以说是一种不太整洁的方法。

我编辑了我的问题以澄清它。这不是关于纠正错误。错误对我来说没关系。我编辑了我的问题来澄清它。这不是关于纠正错误。错误对我来说没关系。它是关于从程序中重定向它自己得到了它。因此,加载器未在流程上下文中执行。但是在运行时发生的诸如“…未找到符号…”之类的运行时错误呢。谁生成了程序中未发现的符号类型错误?是动态链接器吗?如果您指的是
dlopen
等,那么这些错误是由相关库函数(例如
libdl
)创建的;因为这些都是用你的程序从写到stderr的,所以你应该能够控制它们。明白了。因此,加载器未在流程上下文中执行。但是在运行时发生的诸如“…未找到符号…”之类的运行时错误呢。谁生成了程序中未发现的符号类型错误?是动态链接器吗?如果您指的是
dlopen
等,那么这些错误是由相关库函数(例如
libdl
)创建的;由于这些代码是用程序从写入stderr的,所以您应该能够控制它们。