Re: no files can be opened in a C program

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Mon, Jul 25, 2011 at 9:41 PM, Manish Katiyar <mkatiyar@xxxxxxxxx> wrote:
> On Mon, Jul 25, 2011 at 9:29 PM, Abhijit Pawar <apawar.linux@xxxxxxxxx> wrote:
>> Hi Dave,
>> On 07/25/2011 09:20 PM, Dave Hylands wrote:
>>> Hi Abhijit,
>>>
>>> On Mon, Jul 25, 2011 at 6:35 AM, Abhijit Pawar<apawar.linux@xxxxxxxxx>  wrote:
>>>> On 07/25/2011 05:29 PM, Naveen Kumar wrote:
>>>>
>>>> You can use command ulimit -a, there you can check the limit for a process.
>>>>
>>>> Thanks,
>>>> Naveen
>>>>
>>>> Ulimit gives 1024 as open file limit. In struct task_struct it has a member
>>>> called struct files_struct *files;
>>>>
>>>> I tried checking for this member and the limit however I am  not able to
>>>> decide correctly why the limit is 1024.
>>>>   Also, is there any distinction between 32 bit and 64 bit systems for this
>>>> limit?
>>> My 64-bit system reports 1024 as well.
>>>
>>> I have no troubles compiling kernels.
>>>
>> Thanks. Yes, on my 64 bit Fedora 15 I get same value as yours.
>>
>> What I am interested in is knowing why the limit is on 1024 File
>> Descriptors? That means 1024 Inodes. AFAIK there isnt anything written
>> in filesystem code which will put this limit of 1024 inodes for a process.
>> This means its very specific to the process.
>> Unfortunately I am know having details on the process front. Is there
>> anything which you or anyone aware in process area because of which this
>> limit is there?
>
> man getdtablesize

and if you trace the kernel code, it comes from the limits of the init
task, which is hard coded during creation. You can get/set these
values using getrlimit/setrlimit.


include/linux/init_task.h
33 #define INIT_SIGNALS(sig) {                                             \
.................
.................
 41         .rlim           = INIT_RLIMITS,
..............

include/asm-generic/resource.h
 72 #define INIT_RLIMITS                                                    \
 73 {                                                                       \
 74         [RLIMIT_CPU]            = {  RLIM_INFINITY,  RLIM_INFINITY },   \
 75         [RLIMIT_FSIZE]          = {  RLIM_INFINITY,  RLIM_INFINITY },   \
 76         [RLIMIT_DATA]           = {  RLIM_INFINITY,  RLIM_INFINITY },   \
 77         [RLIMIT_STACK]          = {       _STK_LIM,   _STK_LIM_MAX },   \
 78         [RLIMIT_CORE]           = {              0,  RLIM_INFINITY },   \
 79         [RLIMIT_RSS]            = {  RLIM_INFINITY,  RLIM_INFINITY },   \
 80         [RLIMIT_NPROC]          = {              0,              0 },   \
 81         [RLIMIT_NOFILE]         = {   INR_OPEN_CUR,   INR_OPEN_MAX },   \
...............
..............

include/linux/fs.h
25 #undef NR_OPEN
 26 #define INR_OPEN_CUR 1024       /* Initial setting for nfile rlimits */
 27 #define INR_OPEN_MAX 4096       /* Hard limit for nfile rlimits */


HTH
-- 
Thanks -
Manish

_______________________________________________
Kernelnewbies mailing list
Kernelnewbies@xxxxxxxxxxxxxxxxx
http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies



[Index of Archives]     [Newbies FAQ]     [Linux Kernel Mentors]     [Linux Kernel Development]     [IETF Annouce]     [Git]     [Networking]     [Security]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux RAID]     [Linux SCSI]     [Linux ACPI]
  Powered by Linux