Articles of c + +

如何在TextView控件中剪切,复制,粘贴和select全部内容?

我试图剪切,复制,粘贴,并select所有与TextView的Gtk控制。 为什么TextView控件? 因为我似乎无法得到血腥的TextEditor控制去多行! 无论如何…我如何: 从TextView控件中剪切文本? 从TextView控件复制文本? 将文本粘贴到TextView控件中? 在TextView控件中select所有文本? 以下是我所尝试的:1小时的谷歌search。 和这个: TextView tv = …; TextIter start, end; if (tv.Buffer.GetSelectionBounds(start, end)) { String selected = tv.Buffer.GetText(start, end); Clipboard clipboard = tv.GetClipboard(Gdk.Selection.Clipboard); clipboard.Text = selected; } 从: https : //stackoverflow.com/questions/26308501/gtk-textview-copy-and-paste – 但这显然不起作用(因此我的问题)。 我也发现这个: http : //docs.go-mono.com/ ?link=T%3aGtk.TextView Mono GTK C#文档。 有这么多东西,似乎是不存在的。

如何使用-std = gnu99编译Linux内核模块?

我最近学会了如何编写简单的字符驱动程序,并且在使用代码的同时,我注意到我的C99代码中出现了很多下面的GCC警告: warning: ISO C90 forbids mixed declarations and code 我认为这是因为主要的Linux内核Makefile被设置为使用非C99标准进行编译。 我周围search我在这里find了这个答案在stackoverflow: 如何使用make和编译为C99? 所以我自然在我的Makefile中尝试了以下内容: ccflags-y := -std=gnu99 不幸的是,这并没有消除GCC警告。 我检查了make的详细输出并validation了GCC确实是在最后加上-std=gnu99执行的。 所以我有点困惑。 如何使用-std=gnu99选项正确编译Linux内核模块? 编辑 : 我注意到GCC输出显示了这个选项: -Wdeclaration-after-statement 。 这就是为什么我即使使用-std=gnu99选项也会得到警告?

如何检测Linux关机/重启

我试图检测closures或从我的C程序从Linux重新启动。 我发现程序可以使用signal(SIGTERM,handler)(SIGKILL,handler)。 但是如果用户用命令杀死这个进程,这两个也会触发。 在一些解决scheme,他们说可以使用运行级别,但它不会工作。 在系统初始化运行级别之前,不知道进程是否被终止。 我甚至尝试把脚本放在rcx.d中,但它仍然不起作用。 有没有人有一些build议? 我需要在多种Linux系统上运行。 谢谢。 [更新]我使用R解决scheme,但仍然没有看到我的数据在重新启动或关机清除。 是我的function是错误的? int start() { if (initIni() == EXIT_FAILURE) return EXIT_FAILURE; struct sigaction act; memset(&act, '\0', sizeof(act)); act.sa_sigaction = &signal_callback_handler; act.sa_flags = SA_SIGINFO; sigaction(SIGTERM, &act, NULL); …. } void signal_callback_handler(int signum, siginfo_t *siginfo, void *context) { if (signum == SIGTERM && (long)siginfo->si_pid == 1) { clearData(); […]

如何在Linux上用GCC编译C和Gtk +?

我search和search,但我没有得到我真正想要的信息。 有人可以请尽可能完全和根本地解释在Linux上使用GCC编写C时如何编译Gtk +代码。 有一些像反引号,“c99”和.o文件,我根本不明白。 我也很感激任何学习Gtk +代码的资源。 我发现所有的来源是版本2.x,但我认为3.6是当前版本。 我想重申,我只对C代码感兴趣。 请不要尝试向我解释C ++或C#的好处,我已经阅读了所有这些。 我在这里为C.谢谢!

dlopen()searchpath

有没有办法find编程的dlopen()search共享对象的path? 我一直以为dlopen()只会在/ lib和/ usr / lib中看到,但现在我已经看到,在Linux Mint上,像libglib-2.0.so这样的几个核心组件在一个完全不同的文件夹中,即在/ rofs / lib / i386-gnu-linux等等。 有没有办法去了解所有这些dlopen()将search共享对象的path? 我已经检查了环境variablesLD_LIBRARY_PATH,但是根本没有定义它。

如何获得3g的调制解调器信号强度在C + +的Linux?

没有使用AT命令我们怎么能得到3G调制解调器的信号强度? NetworkManager的gdbus对象没有像getSignalStrength这样的方法。 networkingpipe理员正在locking设备文件以防止使用AT命令。 nm-applet能够在系统托盘中显示信号强度。 所以应该有一种方法来获得networkingpipe理员的信号强度! nmcli是nm-applet的命令行计数器部分。 我nmcli获得信号强度吗? 手册中没有提到信号强度。

让fgets在Linux上发出更长的read()调用

我正在阅读使用fgets相当大的文本(高达128K)的文本。 我看到服务器上的过度的上下文切换,使用strace我看到以下内容: read(3, "9005 10218 00840023102015 201008"…, 4096) = 4096 即fgets读取4096个字节的块。 有没有什么办法来控制fgets调用read()时使用的大块?

dlopen – 未定义的符号错误

我正在使用dlopen在运行时加载共享库 dlopen("SharedLibarary1.so", RTLD_NOW | RTLD_GLOBAL); 在该共享对象中,我指的是在另一个共享库“SharedLibarary2.so”中定义的const char *。 可执行文件和两个库都是使用-rdynamic构build的。 但是,当使用dlopen时,我仍然遇到运行时错误:“/usr/lib/SharedLibarary1.so:undefined symbol”,并指向mangled的const char *有未定义的符号。 whith GDB的“信息共享”我可以看到,第二个库没有加载的错误点。 如果我在第一个图书馆做第二个图书馆之前做了一个dlopen,那么这个问题怎么会消失呢? 有没有更好的方法来强制加载器加载第二个库的未解决符号?

epoll_wait:maxevents

int epoll_wait(int epfd, struct epoll_event *events, int maxevents, int timeout); 我对maxevents参数有点困惑。 假设我想写一个可以处理高达10k连接的服务器。 我将maxevents定义为10000,还是应该由于某种原因而降低?

inotify不发射文件修改通知

我一直在调整这里的例子,使其重复观看“修改”的文件。 我的代码在这里 。 在我的testing中,inotify通知只是在文件第一次被修改时触发(即touch )。 对该文件的任何后续修改都不会导致任何通知触发。 stat显示“修改”时间已经改变。 此外,修改代码以删除手表,并重新添加每次通知触发(即将inotify_add_watch和inotify_rm_watch移到我的示例中的while(1)循环内)并不能帮助解决此问题。 我想知道这里有没有人可以帮助我做错什么。 另外,虽然我为IN_ALL_EVENTS添加了一块手表,但我只关心IN_MODIFY事件。 不知道这是否有任何区别。 另外,这个用例不起作用吗? 我应该改变我的方法来观看目录吗? 请指教。 TIA。 编辑1:正如由themel指出的, i的处理需要一些修复。 但是即使是固定版本也不会为后续的文件系统“事件”发射通知。 另外,在目录中添加一个监视器而不是文件会显示类似的非确定性行为。 编辑2:我想得到这个基于这个答案工作的asio + inotify示例 。 不幸的是,这个例子并没有为我工作。 任何帮助将非常感激。 TIA。