Hình tôi sẽ tiếp tục và đưa vào một ví dụ đầy đủ về một thứ mà mọi người có thể biên dịch và chạy cho những người không thành thạo với C dựa trên câu trả lời của @BuvinJ
#include <stdio.h>
#include <string.h>
#include <fcntl.h> // open function
#include <unistd.h> // close function
#include "sys/syscall.h"
int main(); // Let's not worry about this for now
void dmesg( const char *tag, const char *msg, const int len )
{
const int TAG_LEN=3;
char buffer[128]={0};
memcpy( &buffer[0], tag, TAG_LEN );
memcpy( &buffer[TAG_LEN], msg, len );
int fd_kmsg = open( "/dev/kmsg", O_WRONLY );
write( fd_kmsg, &buffer, TAG_LEN+len );
close( fd_kmsg );
}
void dmesgWarn( const char *msg, const int len ){ dmesg( "<4>", msg, len ); }
void dmesgInfo( const char *msg, const int len ){ dmesg( "<6>", msg, len ); }
void dmesgDebug( const char *msg, const int len ){ dmesg( "<7>", msg, len ); }
int main(int argc, char **argv)
{
int getmysize = strlen(argv[1]);
printf("%d\n", getmysize);
printf("To be written: %s\nSize of argument: %d\n", argv[1], getmysize);
// dmesgWarn dmesgInfo or dmesgDebug
dmesgDebug(argv[1], getmysize);
};
Để chạy, hãy lưu ở trên dưới dạng kmsg.c và gcc kmsg.c -o kmsg; sudo ./kmsg "chuỗi bạn muốn thêm vào / dev / kmsg"
make -C ...
Makefile thay vì Tab, do đó, sao chép nội dung trên của Makefile không hoạt động - thêm ở đây . Tôi dường như không thể thêm điều này trong một chỉnh sửa ... Cảm ơn, nhân tiện, câu trả lời tuyệt vời.