我有以下文件
titi
tata
toto
tata
Run Code Online (Sandbox Code Playgroud)
如果我执行
sed -i "/tat/d" file.txt
Run Code Online (Sandbox Code Playgroud)
它将删除包含的所有行tat.该命令返回:
titi
toto
Run Code Online (Sandbox Code Playgroud)
但我想只删除包含tat以下内容的文件中出现的第一行:
titi
toto
tata
Run Code Online (Sandbox Code Playgroud)
我怎样才能做到这一点?
我有一个你好的世界计划.
#include <stdio.h>
#include <stdlib.h>
int main()
{
printf("hello world! \n");
return 0;
}
Run Code Online (Sandbox Code Playgroud)
我-lmicroxml在链接阶段添加了程序的构建,以便链接到库libmicroxml.so
当我启动程序时,我遇到了分段错误.分段故障与负载有关libmicroxml.so.在我的helleo世界程序执行之后:
strace ./test
execve("./test", ["./test"], [/* 11 vars */]) = 0
old_mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS|0x4000000, -1, 0) = 0x777de000
stat("/etc/ld.so.cache", 0x7f944760) = -1 ENOENT (No such file or directory)
open("/lib/libmicroxml.so.1", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/lib/libmicroxml.so.1", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/lib/libmicroxml.so.1", O_RDONLY) = 3
fstat(3, {st_mode=S_IFREG|0755, st_size=4129, ...}) = 0
old_mmap(NULL, …Run Code Online (Sandbox Code Playgroud) 看来,filter的sniff功能不能正常工作.
我用以下过滤器执行嗅探
a=sniff(count=1,filter="tcp and host 192.168.10.55 and port 14010")
Run Code Online (Sandbox Code Playgroud)
但是sniff有时候抓住这样的UDP包:
>>> a=sniff(count=1,filter="tcp and host 192.168.10.55 and port 14010")
>>> a
<Sniffed: TCP:0 UDP:1 ICMP:0 Other:0>
Run Code Online (Sandbox Code Playgroud)
有时候sniff捕获带有错误端口的TCP数据包:
>>> a=sniff(count=1,filter="tcp and host 192.168.10.55 and port 14010")
>>> a
<Sniffed: TCP:1 UDP:0 ICMP:0 Other:0>
>>> a[0]
<Ether dst=00:26:55:cb:3b:10 src=00:22:64:55:c8:89 type=0x800 |<IP version=4L ihl=5L tos=0x10 len=92 id=8683 flags=DF frag=0L ttl=64 proto=tcp chksum=0x9484 src=192.168.1.71 dst=192.168.1.133 options=[] |<TCP sport=ssh dport=1874 seq=350107599 ack=2484345720 dataofs=5L reserved=0L flags=PA window=254 …Run Code Online (Sandbox Code Playgroud) 我有以下代码创建一个子fork.我想在孩子完成执行之前杀死孩子.怎么做?
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
int i;
main (int ac, char **av)
{
int pid;
i = 1;
if ((pid = fork()) == 0) {
/* child */
while (1) {
printf ("I m child\n");
sleep (1);
}
}
else {
/* Error */
perror ("fork");
exit (1);
}
sleep (10)
// TODO here: how to add code to kill child??
}
Run Code Online (Sandbox Code Playgroud) 我正在使用libcurl.它非常好(作为客户端),我曾经打开一个服务器的套接字,然后发送我的HTTP数据包.
我想知道是否可以使用libcurl开发http服务器.http服务器将侦听给定端口,然后当它收到http数据包时,http服务器返回需要摘要身份验证.
我在stackoverflow和curl网站上做了一些研究,但没有结果.
用libcurl可以做到吗?怎么做?
我有以下代码
#include <stdio.h>
#include <stdlib.h>
#include <stddef.h>
#include <string.h>
#include <json/json.h>
int main(int argc, char **argv)
{
json_object *new_obj;
char buf[] = "{ \"foo\": \"bar\", \"foo2\": \"bar2\", \"foo3\": \"bar3\" }";
new_obj = json_tokener_parse(buf);
.....
json_object_put(new_obj);
}
Run Code Online (Sandbox Code Playgroud)
是否json_object_put(new_obj)释放所有内存相关new_obj?
我的项目包含C文件.在某些文件中,我将函数定义为static.
我在单元测试中使用CppUnit,我想测试这些静态函数.我知道不允许从文件外部(它定义的地方)调用函数.有没有解决方案来避免这个问题,以便从我的C++测试文件中调用这些静态函数?
根据该主题,允许将指针与数组对象的最后一个元素之一进行比较.
根据@jalf注释,禁止在数组对象的第一个元素之前将指针与一个进行比较.
例1
int array[10];
int *ptr;
for(ptr=&array[9]; ptr>(array-1); ptr--) {...}
Run Code Online (Sandbox Code Playgroud)
例题
int array[10];
int *ptr;
for(ptr=&array[9]; ptr>=(array); ptr--) {...}
Run Code Online (Sandbox Code Playgroud)
1)是否禁止example1和example2?
2)C标准是否有证据表明禁止在数组对象的第一个元素之前比较指针?
我现在正在为我的应用创建首选项页面
在API-14之后,可以使用switchpreference.我想用它来取代API14 +设备上的checkboxpreference
它易于使用res/xml并res/xml-14获得正确的xml资源
但是,在编码部分,根据API切换偏好并不方便.
public class SettingActivity extends PreferenceActivity {
private CheckBoxPreference enable;
private SwitchPreference enablev14;
@Override
protected void onCreate(Bundle savedInstanceState) {
addPreferencesFromResource(R.xml.setting);
if (Build.VERSION.SDK_INT < 14)
enable = (CheckBoxPreference) findPreference(key_enable);
else
enablev14 = (SwitchPreference) findPreference(key_enable);
}
...
}
Run Code Online (Sandbox Code Playgroud)
现在我的方法是使用if子句检查Build.VERSION并获取相应的对象来处理它.但是管理代码非常不方便.有人有更聪明的方法吗?
我在高级Linux编程中遇到了一个概念.这是一个链接:参考4.5 GNU/Linux线程实现.
我很清楚作者所说的概念,但我对他为线程打印processID所解释的程序感到困惑.
这是代码
#include <pthread.h>
#include <stdio.h>
#include <unistd.h>
void* thread_function (void* arg)
{
fprintf (stderr, "child thread pid is %d\n", (int) getpid ());
/* Spin forever. */
while (1);
return NULL;
}
int main ()
{
pthread_t thread;
fprintf (stderr, "main thread pid is %d\n", (int) getpid ());
pthread_create (&thread, NULL, &thread_function, NULL);
/* Spin forever. */
while (1);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
根据作者的上述代码的输出是
% cc thread-pid.c -o thread-pid -lpthread
% ./thread-pid & …Run Code Online (Sandbox Code Playgroud)