我在C文件中定义了一个变量:int x我知道extern int x如果我想在其他文件中使用它,我应该用它来在其他文件中声明它.
我的问题是:我应该在其他文件中将其声明在哪里?
在所有功能之外,
// in file a.c:
int x;
// in file b.c:
extern int x;
void foo() { printf("%d\n", x); }
Run Code Online (Sandbox Code Playgroud)在将使用它的功能内?
// in file b.c:
void foo() {
extern int x;
printf("%d\n", x);
}
Run Code Online (Sandbox Code Playgroud)我的怀疑是:
我是root用户,我看到有很多内容/etc/crontab,我认为是root的cron作业配置.当我使用时crontab -e,我在编辑器中看不到任何内容; 在我退出之后crontab -e,我添加的内容未找到/etc/crontab.那么,root的cron作业配置存储在哪里?和其他用户?
我正在Linux上编写一个C程序,需要使用 执行命令system(),并且需要在执行该命令时设置环境变量,但我不知道在使用时如何设置环境变量system()。
我正在编写一个在Linux和FreeBSD上运行的程序,我想确保每次write()返回时数据实际写入物理设备上的文件,这样我的数据就不会意外丢失(例如,电力丢失,过程意外中断等).
根据OPEN(2)手册页,在Linux(高于2.6)上,O_DIRECT是同步但可能有性能问题; 在FreeBSD上,O_DIRECT不能保证同步,也可能有问题.
所以,在Linux上,无论是O_DIRECT或O_SYNC保证同步写入,但哪一个具有更好的性能?
在FreeBSD上,为保证同步写入,哪个选项具有最佳性能:(1)O_DIRECT+ fsync()(2)O_DIRECT | O_SYNC或(3)O_SYNC单独?
我的 C 程序在 CentOS 5.7 上崩溃,日志如下:
kernel: [1030648.130682] myapp[16454]: segfault at 0 ip b765f683 sp bfc3fa0c error 4 in libc-2.5.so[b75ee000+157000]
Run Code Online (Sandbox Code Playgroud)
似乎对 libc 的调用导致了段错误。我如何知道段错误发生在 libc 的哪个函数中?
这是一个生产环境,没有留下任何核心转储文件;而且很少繁殖。所以,我现在能做的就是分析libc中的哪个函数(由我的程序调用)导致了这个segfault,然后我可以检查我的代码。
如果有指针可以解释这些数字的含义,那就太好了:ip b765f683, sp bfc3fa0c, error 4, b75ee000+157000。我用谷歌搜索但没有找到好的参考资料。
谢谢。
如何限制syslog管理的日志文件的总大小?超出此大小限制(配额)时,可能应删除最早的归档日志文件.
一些日志文件是LOG_LOCALn指定的自定义文件,但我想这与配额问题无关.
谢谢!
我正在使用 centos,我想知道确定我的 gtk 版本的正确方法是什么。我搜索并找到了一些方法,但他们给出了不同的答案,所以我很困惑。例如:我的centos有这个目录:
/usr/lib64/gtk-2.0/2.10.0
,所以版本是 2.10.0。但 ”
pkg-config --modversion gtk+-2.0
”给出了“2.18.9”。而“
rpm -qa | grep -i gtk2
”显示:
gtk2-devel-2.18.9-12.el6.x86_64
gtk2-engines-2.18.4-5.el6.centos.x86_64
gtk2-2.18.9-12.el6.x86_64
gtk2-immodule-xim-2.18.9-12.el6.x86_64
Run Code Online (Sandbox Code Playgroud)
我完全糊涂了。有人帮我吗?谢谢。
我正在研究 Linux 和 FreeBSD。当我使用getpwnam()or时getpwuid(),我得到一个指向结构的指针passwd。使用char*该passwd结构成员的安全方法是什么?
手册页说这个结构是一个静态对象,但会被后续调用覆盖,所以我想安全的方法是使用strdup()来获取成员的副本char*,然后不再使用该passwd结构。
我的理解正确吗?
我正在 freebsd 上工作(但我认为它与 linux 上的相同),并且我正在使用 syslog 来管理我的日志文件,如 /etc/syslog.conf 中所定义:
local1.notice /var/log/my.log
Run Code Online (Sandbox Code Playgroud)
我注意到 my.log 默认情况下将具有 600 访问权限,但我确实希望拥有 666 权限。我怎样才能做到这一点?
谢谢。