小编Mat*_*ith的帖子

如何以编程方式编辑路由表

我正在编写一个在嵌入式平台上运行的守护进程,该平台需要根据它在给定时间连接的接口来更改设备的默认路由.我怎么能以编程方式执行此操作?我知道我可以使用system("route del default && route add default gateway blah"); 等,但有更直接的方式吗?

更新:我通过发现一个允许replacedefaultroute选项的pppd补丁解决了我的特殊问题.该补丁还包括用于以编程方式修改路由表的代码.它包含在这个gentoo错误报告http://bugs.gentoo.org/227321中

c linux networking

6
推荐指数
1
解决办法
3450
查看次数

这个编译器警告是什么意思?“在不同的地址有文本段”

我正在运行 Lion 的 Mac 上交叉编译一个项目,使用 GCC 作为 ARM 目标。我正在使用预编译标头,并且针对针对我的 PCH 进行编译的每个对象都会收到此警告:

cc1plus:警告:/yada/yada/yada_afx.hpp.gch:在不同地址有文本段[默认启用]

它似乎并没有阻止程序运行,但我担心它可能会导致或导致性能问题。该警告是什么意思?我应该担心吗?

顺便说一句,这是 cmake 编译所使用的命令的示例(删除了一些长路径):

/opt/local/bin/arm-linux-uclibc-g++ -DBOOST_PARAMETER_MAX_ARITY=16 \
-DBOOST_MPL_LIMIT_STRING_SIZE=80 -Wno-multichar -g -I/lots/of/include/dirs \
-include yada_afx.hpp -Winvalid-pch -o MySource.cpp.o -c MySource.cpp
Run Code Online (Sandbox Code Playgroud)

cross-compiling precompiled-headers compiler-warnings gcc-warning

5
推荐指数
0
解决办法
1347
查看次数

需要一个可以处理丢失文件的makefile依赖关系规则

我们为我们的系统使用GNU Make.在我们的makefile文件的末尾,我们有一个名为Makedepends的包含,它使用gcc上的-MM开关生成一堆.d文件.然后,我们使用include $(CXXFILES:.cc = .d)行为每个.cc文件包含.d文件.但是当我们删除文件或移动文件时,依赖性步骤会中断,我们必须手动删除.d文件(即使make clean也不起作用,因为依赖项失败)

有没有办法生成这些依赖.d文件或包含这些依赖.d文件,它们将优雅地处理文件删除或重定位?

编辑:例如:我有serial.cc和makefile生成一个serial.d文件,它依赖于buffer.h,但后来我改变它,所以我不再需要buffer.h,我删除buffer.h.下次我运行make时,它会阻塞,因为它包含.d文件仍然使serial.o依赖于buffer.h.

dependencies makefile gnu-make

4
推荐指数
1
解决办法
6169
查看次数

如何在构造函数中初始化char数组样式字符串

我有一个类,我正在序列化通过unix套接字发送它必须有一个字符串,我已存储为char数组.我可以在构造函数中初始化它与我在这里完成的方式不同吗?

typedef struct SerialFunctionStatus_t {
    SerialFunctionStatus_t() 
        : serial_rx_count(0), serial_tx_count(0), socket_rx_count(0), socket_tx_count(0) 
        { port[0] = '\0'; }
    uint32_t serial_rx_count;
    uint32_t serial_tx_count;
    uint32_t socket_rx_count;
    uint32_t socket_tx_count;
    char port[20];
} SerialFunctionStatus_t;
Run Code Online (Sandbox Code Playgroud)

c++ arrays string

2
推荐指数
1
解决办法
1715
查看次数

程序分叉时如何清除输出缓冲区?

我有一个写入FILE*cgiOut的程序,在写入流后,我需要派生并运行后台进程.麻烦的是,在fork之后,FILE*流似乎有时会刷新并且我得到重复的输出(在fork之后,所有打开的文件都被关闭,我猜这会导致刷新缓冲区).我怎么能避免这个?我不想在主进程中关闭文件,因为它在库中打开,我认为它是一个套接字或管道.

linux file-io fork

1
推荐指数
1
解决办法
191
查看次数