Click here to Skip to main content
15,890,336 members
Please Sign up or sign in to vote.
1.00/5 (1 vote)
See more:
Hi:

Which kernel API does Linux cmd [ chattr ] call ?


Thanks!
Posted

The answer:

C++
int flags = 0;
ioctl(fd,FS_IOC_GETFLAGS,&flags);
flags |= FS_COMPR_FL;
flags &= ~FS_NOCOMP_FL;
ioctl(fd,FS_IOC_SETFLAGS,&flags);


Thanks
 
Share this answer
 
Comments
Sergey Alexandrovich Kryukov 1-Jul-13 23:38pm    
How come it could be the answer?...
—SA
The answer:

C#
int flags = 0;
ioctl(fd,FS_IOC_GETFLAGS,&flags);
flags |= FS_COMPR_FL;
flags &= ~FS_NOCOMP_FL;
ioctl(fd,FS_IOC_SETFLAGS,&flags);

C++



Thanks!
 
Share this answer
 
Comments
Sergey Alexandrovich Kryukov 1-Jul-13 23:39pm    
Not again.
Why not try looking for the man page[^] first?
 
Share this answer
 
Comments
Lucky_Girl 25-Jun-13 3:15am    
I have tried .
It does not tell me which kernel Api calls.
Richard MacCutchan 25-Jun-13 3:22am    
Follow the link to the source code.
Lucky_Girl 25-Jun-13 3:57am    
I tried to [strace chattr +c main.cpp].

i can not find which Api i want is.
there are so many APIS
Thanks!
[biz@localhost TEST]$ strace chattr +c main.cpp

execve("/usr/bin/chattr", ["chattr", "+c", "main.cpp"], [/* 40 vars */]) = 0
brk(0) = 0xdac000
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f07ee138000
access("/etc/ld.so.preload", R_OK) = -1 ENOENT (No such file or directory)
open("/etc/ld.so.cache", O_RDONLY) = 3
fstat(3, {st_mode=S_IFREG|0644, st_size=52661, ...}) = 0
mmap(NULL, 52661, PROT_READ, MAP_PRIVATE, 3, 0) = 0x7f07ee12b000
close(3) = 0
open("/lib64/libe2p.so.2", O_RDONLY) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\240\35@\3323\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0755, st_size=30552, ...}) = 0
mmap(0x33da400000, 2123888, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x33da400000
mprotect(0x33da406000, 2093056, PROT_NONE) = 0
mmap(0x33da605000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x5000) = 0x33da605000
close(3) = 0
open("/lib64/libcom_err.so.2", O_RDONLY) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\360\23\300\3443\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0755, st_size=17256, ...}) = 0
mmap(0x33e4c00000, 2109872, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x33e4c00000
mprotect(0x33e4c03000, 2093056, PROT_NONE) = 0
mmap(0x33e4e02000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x2000) = 0x33e4e02000
close(3) = 0
open("/lib64/libc.so.6", O_RDONLY) = 3
read(3, "\177ELF\2\1\1\3\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\360\355\201\3313\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0755, st_size=1918016, ...}) = 0
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f07ee12a000
mmap(0x33d9800000, 3741864, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x33d9800000
mprotect(0x33d9989000, 2093056, PROT_NONE) = 0
mmap(0x33d9b88000, 20480, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x188000) = 0x33d9b88000
mmap(0x33d9b8d000, 18600, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x33d9b8d000
close(3) = 0
open("/lib64/libpthread.so.0", O_RDONLY) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0`\\\300\3313\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0755, st_size=145720, ...}) = 0
mmap(0x33d9c00000, 2212768, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x33d9c00000
mprotect(0x33d9c17000, 2097152, PROT_NONE) = 0
mmap(0x33d9e17000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x17000) = 0x33d9e17000
mmap(0x33d9e19000, 13216, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x33d9e19000
close(3) = 0
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f07ee129000
mmap(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f07ee127000
arch_prctl(ARCH_SET_FS, 0x7f07ee127720) = 0
mprotect(0x601000, 4096, PROT_READ) = 0
mprotect(0x33da605000, 4096, PROT_READ) = 0
mprotect(0x33e4e02000, 4096, PROT_READ) = 0
mprotect(0x33d9b88000, 16384, PROT_READ) = 0
mprotect(0x33d9e17000, 4096, PROT_READ) = 0
mprotect(0x33d921f000, 4096, PROT_READ) = 0
munmap(0x7f07ee12b000, 52661) = 0
set_tid_address(0x7f07ee1279f0) = 6790
set_robust_list(0x7f07ee127a00, 0x18) = 0
futex(0x7fff425463cc, FUTEX_WAKE_PRIVATE, 1) = 0
futex(0x7fff425463cc, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, NULL, 7f07ee127720) = -1 EAGAIN (Resource temporarily unavailable)
rt_sigaction(SIGRTMIN, {0x33d9c05ae0, [], SA_RESTORER|SA_SIGINFO, 0x33d9c0f500}, NULL, 8) = 0
rt_sigaction(SIGRT_1, {0x33d9c05b70, [], SA_RESTORER|SA_RESTART|SA_SIGINFO, 0x33d9c0f500}, NULL, 8) = 0
rt_sigprocmask(SIG_UNBLOCK, [RTMIN RT_1], NU
Lucky_Girl 25-Jun-13 4:01am    
^ ^
rt_sigprocmask(SIG_UNBLOCK, [RTMIN RT_1], NULL, 8) = 0
getrlimit(RLIMIT_STACK, {rlim_cur=10240*1024, rlim_max=RLIM_INFINITY}) = 0
brk(0) = 0xdac000
brk(0xdcd000) = 0xdcd000
open("/usr/lib/locale/locale-archive", O_RDONLY) = 3
fstat(3, {st_mode=S_IFREG|0644, st_size=99158576, ...}) = 0
mmap(NULL, 99158576, PROT_READ, MAP_PRIVATE, 3, 0) = 0x7f07e8296000
close(3) = 0
lstat("main.cpp", {st_mode=S_IFREG|0664, st_size=125, ...}) = 0
lstat("main.cpp", {st_mode=S_IFREG|0664, st_size=125, ...}) = 0
open("main.cpp", O_RDONLY|O_NONBLOCK) = 3
ioctl(3, EXT2_IOC_GETFLAGS, 0x7fff4254623c) = 0
close(3) = 0
lstat("main.cpp", {st_mode=S_IFREG|0664, st_size=125, ...}) = 0
open("main.cpp", O_RDONLY|O_NONBLOCK) = 3
ioctl(3, EXT2_IOC_SETFLAGS, 0x7fff4254623c) = 0
close(3) = 0
exit_group(0) = ?
Richard MacCutchan 25-Jun-13 4:32am    
This looks like the one: ioctl(3, EXT2_IOC_SETFLAGS, 0x7fff4254623c) = 0.

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)



CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900