> /home/traceroute");后....">

当前位置:  技术问答>linux和unix

使用system调用进行重定向的严重问题

    来源: 互联网  发布时间:2016-11-21

    本文导语:  本帖最后由 kaixinguo386 于 2010-12-30 14:52:17 编辑 详细描述我的情况: 我的程序在启动时关闭了标准输出和标准错误 1、我在程序中使用system("traceroute 192.168.15.98 >> /home/traceroute");后在traceroute文件中没有看到任何内容; ...

本帖最后由 kaixinguo386 于 2010-12-30 14:52:17 编辑
详细描述我的情况:
我的程序在启动时关闭了标准输出和标准错误
1、我在程序中使用system("traceroute 192.168.15.98 >> /home/traceroute");后在traceroute文件中没有看到任何内容;
2、若我不关闭标准输出和标准错误则没有问题,打印可见
3、在终端中输入此命令没有任何问题;
4、在此程序中系统调用route和ping时也没有问题
疑问:
1、我打印的内容到哪里去了呢?
2、是我的system使用存在问题,还是traceroute本身有问题,还是由于子进程的标准输出也被关闭的缘故???
   请高手赐教!

|
可能还是打印缓冲引起的吧。在程序执行的时候有做两件事来确定是什么原因:
1, lsof -p  看是否存在标准输出及标准错误描术符.
2, 等traceroute退出后再看/home/traceroute是否存在内容

|
system("traceroute 192.168.15.98 &> /home/traceroute");

这样试一下,可能traceroute的日志是用标准错误输出的

|
我的试验结果
// sys.c
#include 
main() { system("traceroute 10.164.129.29 > trace.out"); }

编译后:
1、执行a.out,可以输出
2、执行a.out 1>&-,依然可以输出

也就是说无论关闭标准输出与否,system.. 那个语句都可以输出

|
char tracerouteip[100] = {0};//有的编译器只初始话第一个字节,好象应该用{0,}
...
memcpy(tracerouteip,testipaddr,100*sizeof(char));//你确定testipaddr有100那么长吗?

//sprintf(command,"traceroute %s > /home/sw/traceroute",tracerouteip);
sprintf(command,"traceroute 192.168.15.98 > /home/sw/traceroute");//这样先试试,另外有/home/sw这个路径吗?
system(command);

|

建议lz用10楼的代码先试试.

|
不太可能哟,关闭了标准输出之后是不会再看到的,除非又打开了。

10楼上边的代码我在UBUNTU上实验过了,不会出现显示的,反正我在我的电脑上测的时候没有出现,

而且楼主给的代码并不完全,并不能详细分析

|
而且十楼的代码并没有关闭标准输出和标准错误,所以,system命令一定会在命令行上显示的,这并不奇怪啊

|
不重定向,在屏幕上有显示么

    
 
 

您可能感兴趣的文章:

  • 在Python中使用SWIG调用C和C++程序
  • 新手:Linux下使用第三方C库(openssl),是调用.so文件还是直接调用.h文件?
  • Qt下使用Linux系统调用?
  • fork~exec不会使用,请问怎么使用,我只是想简单的用进程调用一个程序。
  • 关于使用Ptrace系统调用监控进程问题
  • 使用gdb时为什么调用list不出现代码
  • [求助]如何获取一个程序所使用的系统调用和参数?
  • linux不用命令方式读文件获取网络流量,如何使用C函数调用获取网络流量信息?
  • Unix下System函数实现中为何要使用shell去调用执行程序?
  • linux 内核编程中如何使用系统调用函数呢?
  • 请问驱动程序中系统调用使用情况
  • 如何使用ececv调用另外一个程序?
  • 关于使用vnc 远程调用的问题
  • 如何使用JAVA调用利用用VC写的已有的动态库
  • 请问在 linux 下如何使用 execl() 调用另一个多进程的程序?
  • php 使用system() 调用c程序的问题
  • 求助:内核系统调用的使用问题
  • 在LINUX中使用C调用系统命令,怎么取得系统命令的输出?
  • 怎么让system调用使用ksh?
  • 如果遇到多层函数调用,使用一次上锁解锁可以保证数据的线程独立性么
  • 在线等~~如何在使用加载模块的方法加入系统调用。
  • linux下objdump命令用法介绍及如何使用objdump命令进行反汇编
  • 我安装Samba 3.0.4,能够使用smbclient进行登陆,可是不能使用windowsXP进行登陆
  • 消息队列一般是怎么使用的,是采用While的方式进行轮询么
  • linux中使用sort命令进行排序的问题
  • 只使用InputStream/OutputStream进行IO操作行吗?
  • 使用SYSTEM V队列,有关消息资源释放的问题 iis7站长之家
  • 下载的linxu如何使用md5文件进行验证?
  • 使用jdk1.4+wstk3.2+tomcat+axis进行开发webservice
  • linux下动态库中如何导出对象进行使用
  • 有谁告诉我如何使用main中的args进行输入输出的操作?
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 急问:Linux程序中,使用system函数的几个问题
  • 请问:使用System.getProperty(),或者如何得到属性文件的路径
  • linux平台下system函数的使用问题
  • 初学者,问个简单的问题:System.in怎么使用?
  • 在awk中使用system系统命令
  • socket system wget在程序中使用的奇怪现象.该怎么解决呢
  • 在java控制台程序中,可以用System.exit(0);使用一个程序终止,那么在servlet中如何使一个servlet程序终止呢?
  • java system类使用方法示例 获取系统信息
  • 请教:使用system(命令)或者exec(命令)启动一个进程执行命令,如何判断这个命令是否启动成功或正在运行?
  • 使用SYSTEM V队列,有关消息资源释放的问题
  • jsp页面中不能使用System.out.println?
  • 菜鸟求助system("cmd")的使用问题,急!!达人们帮忙看看,万分感谢!!
  • 使用socket的accept()函数时Interrupted system call问题
  • C#中使用System.Timers.Timer定时器控件的例子
  • linux多线程中使用system函数后时而程序崩溃,求助!!!
  • 求救:修改fstab后不能启动了!可以使用single模式,但是显示file system是read-only!而且vi时显示unable to open swap file
  • .Net笔记:System.IO之Stream的使用详解
  • C++ I/O 成员 tellg():使用输入流读取流指针
  • 在测试memset函数的执行效率时,分为使用Cash和不使用Cash辆种方式,该如何控制是否使用缓存?
  • C++ I/O 成员 tellp():使用输出流读取流指针
  • 求ibm6000的中文使用手册 !从来没用过服务器,现在急需使用它,不知如何使用! 急!!!!!
  • Python不使用print而直接输出二进制字符串
  • 请问:在使用oracle数据库作开发时,是使用pro*c作开发好些,还是使用库函数如oci等好一些啊?或者它们有什么区别或者优缺点啊?
  • Office 2010 Module模式下使用VBA Addressof
  • 急求结果!!假设一个有两个元素的信号量集S,表示了一个磁带驱动器系统,其中进程1使用磁带机A,进程2同时使用磁带机A和B,进程3使用磁带机B。
  • windows下tinyxml.dll下载安装使用(c++解析XML库)
  • c#中SAPI使用总结——SpVoice的使用方法
  • tcmalloc内存泄露优化c++开源库下载,安装及使用介绍
  • 使用了QWidget的程序,如何使用后台程序启动它?
  • sharepoint 2010 使用STSNavigate函数实现文件下载举例
  • 共享内存一般是怎么使用的,是同消息队列配合使用么


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3