open()系统调用中的第三个参数如何工作?

时间:2017-10-08 02:06:59

标签: c unix

@(Html.ShieldGrid()
            .Name("grid")
            .DataSource(ds => ds.Remote(rb => rb.Read("/Tours/getVouchers/94")
                .Schema(sb => sb
                    .Fields("TourItineraryVoucherId", fb => fb.Path("TourItineraryVoucherId").Type(Shield.Mvc.UI.DataSource.FieldType.Number))
                    .Fields("Name", fb => fb.Path("Name").Type(Shield.Mvc.UI.DataSource.FieldType.String))
                    .Fields("StartTime", fb => fb.Path("StartTime").Type(Shield.Mvc.UI.DataSource.FieldType.Date))
                    .Fields("EndTime", fb => fb.Path("EndTime").Type(Shield.Mvc.UI.DataSource.FieldType.Date))
                    .Fields("TransportType", fb => fb.Path("TransportType").Type(Shield.Mvc.UI.DataSource.FieldType.String))))
            .PagingConfiguration(pb => pb.PageSize(30))
            .RowHover(false)
            .Columns(cb => cb
                .Field("Name")
                .Title("Name"))
            .Columns(cb => cb
                .Field("StartTime")
                .Title("Pickup")
                .Format("{0:dd/MM/yyyy h:MM tt}")
                .ColumnTemplate(@<text>function columnTemplate(cell, item) { $('<input />').appendTo(cell).shieldDateTimePicker({value: new Date(item["StartTime"]), format: "{0:dd/MM/yyyy h:MM tt"}); }</text>))
            .Columns(cb => cb
                .Field("EndTime")
                .Title("Dropoff")
                .Format("{0:dd/MM/yyyy h:MM tt}"))
            .Columns(cb => cb
                .Field("TransportType")
                .Title("Type")
                .Width(70))
            .Columns(cb => cb
                .Width(150)
                .Title(" ")
                .Buttons(b => b.CommandName("edit").Caption("Edit"))
                .Buttons(b => b.CommandName("delete").Caption("Delete")))
            .Editing(eb => eb
                .Enabled(true)
                .Type(Shield.Mvc.UI.Grid.EditingTypeOptions.Row)
                .Confirmation(c => c
                    .Delete(d => d
                        .Enabled(true)
                        .Template(@<text>
                            function (item) {
                            return "Delete Voucher - '" + item.Name + "'?";
                            }
                        </text>))))
            .ToolBar(tb => tb
                .Buttons(b => b.CommandName("insert").Caption("Add Product"))
                .Position(Shield.Mvc.UI.Grid.PositionOptions.Top))
            )

我知道0600与权限有关,但它究竟是如何工作的?

1 个答案:

答案 0 :(得分:2)

使用O_CREAT标志时,您需要使用open的3个参数版本:

根据the man page for open

  

int open(const char * pathname,int flags);

     

int open(const char * pathname,int flags,mode_t mode);

     

mode参数指定在应用时应用的文件模式位                 创建一个新文件。必须在以下时提供此参数                 O_CREAT或O_TMPFILE在flags中指定;如果不是O_CREAT                 指定了O_TMPFILE,然后忽略模式。

请改为尝试:

int fd = open("float.txt", O_CREAT | O_WRONLY, S_IRUSR|S_IWUSR);