Articles of c + +

如何从ac程序运行java程序?

我已经search了这个,但结果是10岁以上,并没有解释什么是JNI是否是唯一的方法,或结果是C + +或C#。 所以这是我的问题: 如何使用下面的代码作为例子从C程序运行Java程序? 我对下面的代码做了哪些具体的修改,让C程序成功调用带有参数的java程序? 在CentOSterminal中,当我在命令行input以下内容时,我能够成功运行一个java程序: java -cp . my.package.SomeClass 1 2 3 同样,从terminal中的同一个文件夹,我可以成功地运行一个C程序时,我在命令行中键入以下内容: ./hello hello.c的代码是: #include <stdio.h> main() { printf("Hello World from C!\n"); } 我如何修改hello.c的代码,以便它也运行带有参数1 2 3 my.package.SomeClass ? 例如,如何完成以下操作,但不会引发错误: #include <stdio.h> main() { printf("Hello World from C!\n"); java -cp . my.package.SomeClass 1 2 3 //What is the right syntax here? } 编辑 […]

无法编译Android的LKM

我有Ubuntu 12.04作为编译环境。 我也有Cyanogen mod内核的源代码(从Github获得: https : //github.com/CyanogenMod/cm-kernel ) 我使用Android NDK r5c 工具链 (for linux) 我有以下代码: #include <linux/kernel.h> #include <linux/module.h> #include <asm/unistd.h> asmlinkage ssize_t (*orig_open)(const char *pathname, int flags); asmlinkage ssize_t hooked_open(const char *pathname, int flags) { printk(KERN_INFO "SYS_OPEN: %s\n", pathname); return orig_open(pathname, flags); } void **sys_call_table; static int __init root_start(void) { sys_call_table= (void *) 0x0030084; […]

如何在C,C ++的Linux操作系统上启动进程

我有无线USB适配器,我使用“pstree”命令来监视所有进程。 当我将USB适配器插入Linux操作系统时,使用“pstree”命令查看新进程“wpa_supplicant”。 我用C / C ++语言。 我知道Linux操作系统将使用“NetworkManager”守护进程来监控networking(eth,蓝牙,wifi等),但我不知道如何启动“wpa_supplicant”? 我可以使用dbus或systemd吗? 感谢Thong LT

获取不能分配内存错误

我在我的程序中得到这个错误… mprotect: Cannot allocate memory ulimit -a给出输出: core file size (blocks, -c) 0 data seg size (kbytes, -d) unlimited scheduling priority (-e) 20 file size (blocks, -f) unlimited pending signals (-i) 16382 max locked memory (kbytes, -l) 64 max memory size (kbytes, -m) unlimited open files (-n) 1024 pipe size (512 bytes, -p) 8 POSIX […]

使用pipe道编写gzipped输出文件,无需额外的磁盘空间

我有以下实现的function,用于读取没有磁盘使用gzipped文件。 #include <fstream> #include <stdlib.h> // for mkstemp() and std::system() #include <memory> #include <errno.h> #include <cassert> #include <unistd.h> // for ::close() and unlink() void foo (std::ifstream& in, std::string& fileName) { char tmpName[] = "/tmp/tmp.XXXXXX"; const int fileDescriptor = mkstemp(tmpName); if (fileDescriptor >= 0) { std::string tmpFileName (tmpName); ::close(fileDescriptor); unlink(tmpFileName.c_str()); std::string cmd= "mkfifo " + tmpFileName; […]

订购两个线程的执行

我想写两个线程,第一个将从控制台读取一个string,第二个将输出字符数。 为此,我必须设置执行线程的顺序,先读后写。 另外我想要一个线程执行。 我怎样才能做到这一点? #include <stdio.h> #include <stdlib.h> #include <pthread.h> void *printCharacterNumber(void *ptr); void *readMessage(void *ptr); int main() { pthread_t thread1, thread2; int iret1, iret2; iret1 = pthread_create(&thread1, NULL, printMessage, NULL); iret2 = pthread_create(&thread2, NULL, printCharacterNumber, NULL); pthread_join(thread1, NULL); pthread_join(thread2, NULL); return 0; } void *readMessage(void *ptr) { char *message; fscan("%s", &message); } void *printCharacterNumber(void […]

如何从使用:: dlopen打开的库中获取dynamic加载库的名称?

在Windows中可以使用GetModuleFileName。 那么Linux呢?

为什么我得到这个错误:解除指向不完整types的指针

我正在为一个类的项目工作,可能是WORST指令,我们必须实现一个简单的调度程序..虽然C编程不是课程的先决条件,这是调度程序的语言,我不一定是C程序员.. 无论如何,我试图通过打印出任务来debugging,以便我可以通过程序跟踪它,但我不断收到以下编译时错误: schedule.c:61:48:错误:取消引用指向不完整types的指针 这是task_struct定义: struct task_struct { struct thread_info *thread_info; int prio, static_prio, normal_prio; unsigned long sleep_avg; unsigned long long last_ran; unsigned long long timestamp; unsigned long long sched_time; unsigned int time_slice, first_time_slice; struct list_head run_list; struct sched_array *array; enum sleep_type sleep_type; int need_reschedule; }; 我试图在里面debugging的function: void initschedule(struct runqueue *newrq, struct task_struct *seedTask) { printf("Inside […]

如何用D-Bus获取设备名称?

我在Linux上用C ++开发了一个应用程序,它与蓝牙设备(如蓝牙套接字或扬声器)进行交互。 我使用D-Bus命令来获取配对设备的列表: dbus-send –system –dest=org.bluez –print-reply $BTADAPTER org.bluez.Adapter.ListDevices 它返回: method return sender=:1.0 -> dest=:1.90 reply_serial=2 array [ object path "/org/bluez/489/hci0/dev_00_1F_C5_75_45_5E" object path "/org/bluez/489/hci0/dev_F0_13_C3_00_A1_08" object path "/org/bluez/489/hci0/dev_00_11_12_30_76_21" object path "/org/bluez/489/hci0/dev_00_11_12_30_76_22" object path "/org/bluez/489/hci0/dev_00_11_12_30_76_23" object path "/org/bluez/489/hci0/dev_00_11_12_30_76_24" ] 这是伟大的,但我不仅需要MAC,但也需要设备的名称(如“linvor”或“GT-I9300”)。 请帮助我一个正确的方式来获得这些名字。

从C传递参数到64位Linux大会

我试图写我的第一个汇编函数从C程序中调用。 这是.c部分: #include <stdio.h> extern int sum(int a, int b); int main() { printf("2+3 = %d\n", sum(2,3)); return 0; } 和汇编部分: .text .global sum sum: push %rbp mov %rsp, %rbp mov 8(%rbp), %rax add 12(%rbp), %rax pop %rbp ret 根据一些教程,参数应该存储在%ebp(32位版本)寄存器中。 但是,当我编译上面的代码,我得到这个结果: 2+3 = 4195607 有人能解释我在做什么错吗? 哦,这里是Makefile: test: test.o testc.o gcc -o test test.o testc.o test.o: […]